package com.sg.dto.base.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc VirtualOrgMemberDto
 * @使用场景
 */
@Data
public class VirtualOrgMemberDto extends BaseDto implements Serializable {

    /**
     * 虚拟组织成员ID
     */
    @ApiModelProperty("虚拟组织成员ID")
    private String virtualOrgMemberId;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 个人账号
     */
    @ApiModelProperty("个人账号")
    private String userId;

    /**
     * 组内职务名称
     */
    @ApiModelProperty("组内职务名称")
    private String virtualOrganizationPosition;

    /**
     * 备注首位字母
     */
    @ApiModelProperty("备注首位字母")
    private String firstLetter;

    /**
     * 角色标识
     */
    @ApiModelProperty("角色标识")
    private String roleCode;

    /**
     * 就职开始时间
     */
    @ApiModelProperty("就职开始时间")
    private Date inductionStartTime;

    /**
     * 就职结束时间
     */
    @ApiModelProperty("就职结束时间")
    private Date inductionEndTime;

    /**
     * 是否负责人 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否负责人")
    private String isPersonCharge;

    /**
     * 是否管理员 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否管理员")
    private String isAdmin;

    /**
     * 是否外部展示 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否外部展示")
    private String isDisplay;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 冗余内容表主键ID
     */
    @ApiModelProperty("冗余内容表主键ID")
    private String entityId;
    /**
     * 虚拟组织ID
     */
    @ApiModelProperty("虚拟组织ID")
    private String virtualOrgId;

    /**
     * 冗余内容表类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表
     */
    @ApiModelProperty("冗余内容表类型编码")
    private String tableTypeCode;

    /**
     * 身份人员ID
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;

    /**
     * 组内职务描述
     */
    @ApiModelProperty("组内职务描述")
    private String virtualOrganizationPositionDesc;

    /**
     * 是否直接干系人 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否直接干系人")
    private String isDirectStakeholders;

    /**
     * 是否上下级关系 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否上下级关系")
    private String isUpperLowerLevels;

    /**
     * 归属对象类型 EVA_TEMP:评价模板
     */
    @ApiModelProperty("归属对象类型")
    private String evaluationTemplateType;

    /**
     * 归属对象ID
     */
    @ApiModelProperty("归属对象ID")
    private String evaluationTemplateId;

    /**
     * 操作人就职记录ID
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 创建人就职记录ID
     */
    @ApiModelProperty("创建人就职记录ID ")
    private String createInductionId;

    /**
     * 发布人就职记录ID
     */
    @ApiModelProperty("发布人就职记录ID")
    private String releaseInductionId;

    /**
     * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
     */
    @ApiModelProperty("存档类型")
    private String archivngType;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;
    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 批次标识
     */
    @ApiModelProperty("批次标识")
    private String batchCode;
    /**
     * 个人资料记录ID
     */
    @ApiModelProperty("个人资料记录ID")
    private String personalDataId;

    /**
     * 身份人员编号
     */
    @ApiModelProperty("身份人员编号")
    private String roleMemberCode;

    /**
     * 职务信息展示
     */
    @ApiModelProperty("职务信息展示")
    private String positionIdName;
    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 业务操作类型编码 EVA_REPORT_TAST:汇报任务评价 QUESTION_SOLVER:问题解决人 REPORT_UP:向上汇报
     */
    @ApiModelProperty("业务操作类型编码")
    private String businessOperationTypeCode;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     * 就职单位类型实例 ORG:组织 DEPT:部门
     */
    @ApiModelProperty("就职单位类型实例")
    private String inductionUnitTypeCode;

    /**
     * 就职单位对象实例ID
     */
    @ApiModelProperty("就职单位对象实例ID")
    private String inductionUnitId;


    /**
     * 冗余部门名称
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;
    /**
     * 是否末级 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否末级")
    private String isLast;

    /**
     * 层级
     */
    @ApiModelProperty("层级")
    private Long levelNumber;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        VirtualOrgMemberDto that = (VirtualOrgMemberDto) o;
        return virtualOrgMemberId == that.virtualOrgMemberId && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && userId == that.userId && virtualOrganizationPosition == that.virtualOrganizationPosition && firstLetter == that.firstLetter && roleCode == that.roleCode && inductionStartTime == that.inductionStartTime && inductionEndTime == that.inductionEndTime && isPersonCharge == that.isPersonCharge && isAdmin == that.isAdmin && isDisplay == that.isDisplay && orderNumber == that.orderNumber && updateStatus == that.updateStatus && entityId == that.entityId && virtualOrgId == that.virtualOrgId && tableTypeCode == that.tableTypeCode && originalRoleMemberId == that.originalRoleMemberId && virtualOrganizationPositionDesc == that.virtualOrganizationPositionDesc && isDirectStakeholders == that.isDirectStakeholders && isUpperLowerLevels == that.isUpperLowerLevels && evaluationTemplateType == that.evaluationTemplateType && evaluationTemplateId == that.evaluationTemplateId && operationInductionId == that.operationInductionId && createInductionId == that.createInductionId && releaseInductionId == that.releaseInductionId && archivngType == that.archivngType && subjectLifeCycle == that.subjectLifeCycle && idCardName == that.idCardName && nickName == that.nickName && userFace == that.userFace && batchCode == that.batchCode && personalDataId == that.personalDataId && roleMemberCode == that.roleMemberCode && positionIdName == that.positionIdName && operateTime == that.operateTime && businessOperationTypeCode == that.businessOperationTypeCode && createTime == that.createTime && inductionUnitTypeCode == that.inductionUnitTypeCode && inductionUnitId == that.inductionUnitId && deptShortName == that.deptShortName && isLast == that.isLast && levelNumber == that.levelNumber;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), virtualOrgMemberId, virtualOrgInductionRecordId, userId, virtualOrganizationPosition, firstLetter, roleCode, inductionStartTime, inductionEndTime, isPersonCharge, isAdmin, isDisplay, orderNumber, updateStatus, entityId, virtualOrgId, tableTypeCode, originalRoleMemberId, virtualOrganizationPositionDesc, isDirectStakeholders, isUpperLowerLevels, evaluationTemplateType, evaluationTemplateId, operationInductionId, createInductionId, releaseInductionId, archivngType, subjectLifeCycle, idCardName, nickName, userFace, batchCode, personalDataId, roleMemberCode, positionIdName, operateTime, businessOperationTypeCode, createTime, inductionUnitTypeCode, inductionUnitId, deptShortName, isLast, levelNumber);
    }

}
